package ujson

const (
	ProtoHeartBeat = 1

	ProtoId	= 2
	ProtoConnDuplicate = 3
	ProtoVersion = 4

	ProtoCmdMsg = 5
	ProtoWpMsgReq = 6
	ProtoWpMsgResp = 7

	ProtoAutoConfigReq = 8
	ProtoAutoConfigResp = 9

	ProtoMsgPush = 10					// 透传上报处理
)

// 一级
type ProtoMsg struct {
	Type 		int 		`json:"type"`
	Content 	[]byte		`json:"content"`
}

// 二级，ProtoId
type MsgId struct {
	HaveId 		bool 		`json:"have_id"`
	Id 			string		`json:"id"`
	IsCreate 	bool 		`json:"is_create"`
	Pid 		int 		`json:"pid"`
}

// 二级，ProtoVersion
type MsgVersion struct {
	Version 	int 		`json:"version"`
	Platform 	string		`json:"platform"`
}

// 二级，ProtoCmdMsg
type MsgCmd struct {
	Id 			string		`json:"id"`
	TaskId 		string		`json:"task_id"`
	
	Cmd 		string 		`json:"cmd"`
	Params 		string		`json:"params"`
	Timeout 	int 		`json:"timeout"`
	
	Result 		string 		`json:"result"`
	Status 		int 		`json:"status"`
}

// 二级，ProtoWpMsgReq
type MsgWpReq struct {
	Id 			string		`json:"id"`
	TaskId 		string		`json:"task_id"`
	
	WpId 		int 		`json:"wp_id"`
	WpName 		string 		`json:"wp_name"`
	WpMd5 		string		`json:"wp_md_5"`
	WpUrl 		string		`json:"wp_url"`
	WpType 		int 		`json:"wp_type"`
	
	Timeout 	int 		`json:"timeout"`
	Params 		string		`json:"params"`
}

// 二级，ProtoWpMsgResp
type MsgWpResp struct {
	Id 			string		`json:"id"`
	TaskId 		string		`json:"task_id"`
	
	WpId 		int 		`json:"wp_id"`
	Status 		int 		`json:"status"`
	Input 		string		`json:"input"`
	Output 		string		`json:"output"`
}

// 二级，ProtoAutoConfigReq
type MsgAutoConfigReq struct {
	Id 		string		`json:"id"`
	IP 		string		`json:"ip"`
	NotifyType 		int			`json:"notify_type"`
	PayLoad 		[]byte		`json:"pay_load"`
}

// 二级，ProtoAutoConfigResp
type MsgAutoConfigResp struct {

}

// --------------------------- auto config json协议 ------------------------------------
const (
	NtCmdMonitor = 1
	NtCmdRule = 2

	NtFileMonitor = 3
	NtFileRule = 4

	NtLogCollector = 5
	NtLogCollectorRule = 6
)

const (
	CmdRuleFile = "cmd_rule_file"
	FileRuleFile = "file_rule_file"
	LogCollectorRuleFile = "log_collector_rule_file"

	Page404NotFound = "404 page not found"
)

type ConfigFilePayLoad struct {
	FileURL         string              `json:"file_url"`
	MD5             string              `json:"md5"`
}

type EnablePayLoad struct {
	Enable          bool                `json:"enable"`
}
// --------------------------- auto config json协议 ------------------------------------